package kioscodeal

import grails.test.mixin.*
import org.junit.*
import static java.util.Calendar.*

/**
 * See the API for {@link grails.test.mixin.domain.DomainClassUnitTestMixin} for usage instructions
 */
@TestFor(Carrito)

class CarritoTests {

	void testCrearPedidoConClienteValido(){
		//def date = new Date().set(year: 1966,month: DECEMBER,day:19)
		def unCliente = new User ()
		def unCarrito = new Carrito()
		unCarrito.crearPedido(unCliente)
		assert (!unCarrito.pedido.equals(null))	
	}
	
	void testCrearPedidoEnEstadoPendiente(){
		
		def unCliente = new User ()
		def unCarrito = new Carrito()
		unCarrito.crearPedido(unCliente)
		assert unCarrito.pedido.getEstadoPedido().equals(EstadoPedido.PENDIENTE)	
	}
	
	void testCrearPedidoSinCalificacion(){
		
		def unCliente = new User ()
		def unCarrito = new Carrito()
		unCarrito.crearPedido(unCliente)
		assert unCarrito.pedido.getCalificacionPedido().equals(CalificacionPedido.SIN_CALIFICACION)
	}
	
	void testAgregarProductoAlCarrito(){
		def unCliente = new User ()
		def unCarrito = new Carrito()
		def unProducto = new Producto()
		unProducto.id = 1
		unProducto.titulo = 'Marroc'
		def otroProducto = new Producto()
		otroProducto.id = 2
		otroProducto.titulo = 'Coca-Cola 600'
		unCarrito.crearPedido(unCliente)
		unCarrito.agregarProducto(unProducto, 4)
		unCarrito.agregarProducto(otroProducto, 2)
		assert unCarrito.pedido.getProductoPedidos().size()== 2
		def unProductoPedido = unCarrito.pedido.getProductoPedidos(unProducto)
		assert unProductoPedido.producto.id == unProducto.id
		def otroProductoPedido = unCarrito.pedido.getProductoPedidos(otroProducto)
		assert otroProductoPedido.producto.id == otroProducto.id
	}
	
	void testQuitarProductoDelCarrito(){
		def unCliente = new User ()
		def unCarrito = new Carrito()
		def unProducto = new Producto()
		unCarrito.crearPedido(unCliente)
		unCarrito.agregarProducto(unProducto,1)
		assert unCarrito.pedido.getProductoPedidos().size()== 1
		unCarrito.sacarProducto(unProducto)
		assert unCarrito.pedido.getProductoPedidos().isEmpty()
	}
	
	void testModificarCantidadEnCarrito(){
		def unCliente = new User ()
		def unCarrito = new Carrito()
		def unProducto = new Producto()
		unProducto.id=1
		unCarrito.crearPedido(unCliente)
		unCarrito.agregarProducto(unProducto,1)
		assert unCarrito.pedido.getProductoPedidos(unProducto).cantidad == 1
		unCarrito.modificarCantidadProducto(unProducto, 2)
		assert unCarrito.pedido.getProductoPedidos(unProducto).cantidad == 3
	}
}
